package com.ruoyi.epidemic.mapper;

import java.util.List;

import com.ruoyi.epidemic.domain.*;
import org.apache.ibatis.annotations.Param;

/**
 * 疫情防控信息收集Mapper接口
 *
 * @author ruoyi
 * @date 2022-04-04
 */
public interface YqInfoCollectMapper
{
    /**
     * 查询疫情防控信息收集
     *
     * @param id 疫情防控信息收集主键
     * @return 疫情防控信息收集
     */
    public YqInfoCollect selectYqInfoCollectById(Long id);

    /**
     * 查询疫情防控信息收集列表
     *
     * @param yqInfoCollect 疫情防控信息收集
     * @return 疫情防控信息收集集合
     */
    public List<YqInfoCollect> selectYqInfoCollectList(YqInfoCollect yqInfoCollect);

    /**
     * 新增疫情防控信息收集
     *
     * @param yqInfoCollect 疫情防控信息收集
     * @return 结果
     */
    public int insertYqInfoCollect(YqInfoCollect yqInfoCollect);

    /**
     * 修改疫情防控信息收集
     *
     * @param yqInfoCollect 疫情防控信息收集
     * @return 结果
     */
    public int updateYqInfoCollect(YqInfoCollect yqInfoCollect);

    /**
     * 删除疫情防控信息收集
     *
     * @param id 疫情防控信息收集主键
     * @return 结果
     */
    public int deleteYqInfoCollectById(Long id);

    /**
     * 批量删除疫情防控信息收集
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteYqInfoCollectByIds(String[] ids);

    /**
     * 批量审核
     * @param ids
     * @return
     */
    int aduitYqInfoCollectByIds(String[] ids);

    /**
     * 审核所有查询列表
     * @param yqInfoCollect
     * @return
     */
    int aduitInfosAllSelect(YqInfoCollect yqInfoCollect);
    //总提交数
    int getCollectCount(@Param("belongDate")String belongDate,@Param("deptId")Long deptId,@Param("flag")String flag);
    int getSubmitCount(@Param("belongDate")String belongDate,@Param("deptId")Long deptId,@Param("flag")String flag);
    int getExpCount(@Param("belongDate")String belongDate,@Param("aduitStatus")String aduitStatus,@Param("deptId")Long deptId,@Param("flag")String flag);
    int getRedCount(@Param("belongDate")String belongDate,@Param("aduitStatus")String aduitStatus,@Param("deptId")Long deptId,@Param("flag")String flag);
    int getYellowCount(@Param("belongDate")String belongDate,@Param("aduitStatus")String aduitStatus,@Param("deptId")Long deptId,@Param("flag")String flag);
    int getTripCount(@Param("belongDate")String belongDate,@Param("aduitStatus")String aduitStatus,@Param("deptId")Long deptId,@Param("flag")String flag);
    int getTempCount(@Param("belongDate")String belongDate,@Param("aduitStatus")String aduitStatus,@Param("deptId")Long deptId,@Param("flag")String flag);
    int getYangCount(@Param("belongDate")String belongDate,@Param("aduitStatus")String aduitStatus,@Param("deptId")Long deptId,@Param("flag")String flag);

    List<String> getCollectUserIds(@Param("belongDate")String belongDate,@Param("deptId")Long deptId,@Param("flag")String flag);

    /**
     * 查询用户所在填报部门id
     */
    Long selectUserDept(String userId);

    /**
     * 查询用户所在填报部门名称
     */
    String selectUserDeptName(String userId);

    List<Long> checkAduit(String userid);

    List<YqInfoCollect> selectYqInfoCollectListAduit(YqInfoCollect yqInfoCollect);

    /**
     *
     * @param userId
     * @return
     */
    List<AuditUserDTO> getAuditUserList(@Param("userId") String userId, @Param("deptId") String deptId, @Param("belongDate") String belongDate);

    /**
     *
     * @param userId
     * @return
     */
    List<String> getAuditUserIdList(@Param("userId") String userId, @Param("deptId") String deptId, @Param("belongDate") String belongDate);

    /**
     *
     * @param userId
     * @return
     */
    List<String> getUserIdListByDeptIds(@Param("userId") String userId, @Param("deptId") String deptId);

    /**
     *
     * @param list
     * @return
     */
    List<AuditUserDTO> getUnsubmitUserList(@Param("list") List<String> list);

    /**
     *
     * @param userId
     * @return
     */
    YqInfoCollect getYqInfoCollectByUserId(@Param("userId") String userId, @Param("belongDate") String belongDate);

    /**
     * 根据用户userId获取审批人userId
     * @param userId
     * @return
     */
    List<String> getAuditUserByUserId(String userId);

    /**
     *
     * @param userId
     * @return
     */
    List<AuditUserDTO> getUserInfoListByDeptIds(@Param("userId") String userId, @Param("deptId") String deptId);

    /**
     *
     * @param userId
     * @return
     */
    int deleteEpidemicUserDeptBashByUserId(@Param("userId") String userId);

    /**
     *
     * @param userId
     * @return
     */
    List<AuditUserDTO> getDeptListByUserId(@Param("userId") String userId);

    /**
     *
     * @param deptId
     * @return
     */
    String selectDeptNameByDeptId(@Param("deptId") String deptId);

    /**
     *
     * @param userId
     * @return
     */
    AuditUserDTO selectUserInfoFromEpidemicUserDeptBash(@Param("userId") String userId);

    /**
     *
     * @param userId
     * @return
     */
    AuditUserDTO selectUserInfoFromWxCpUser(@Param("userId") String userId);

    /**
     *
     * @param deptId
     * @return
     */
    String selectManagerByDeptId(@Param("deptId") Long deptId);

    List<YqInfoCollect> selectYqInfoCollectByPhoneNumber(@Param("phonenumber") String phonenumber, @Param("belongDate") String belongDate);

    /**
     *
     * @param userId
     * @param permissionType
     * @return
     */
    List<DeptTreeViewItem> getUserDeptListByPermType(@Param("userId") String userId, @Param("permissionType") Integer permissionType);

    /**
     *
     * @return
     */
    List<DeptTreeViewItem> getAllDeptListFromControlDept();

    /**
     *
     * @param flag
     * @return
     */
    List<DeptIdInfo> getDeptIdInfoList(String flag);

    /**
     *
     * @param belongDate
     * @param childDeptIdList
     * @return
     */
    List<YgCollectDTO> getYgCollectDTOList(@Param("belongDate") String belongDate, @Param("childDeptIdList") List<Long> childDeptIdList);

    /**
     *
     * @param deptId
     * @return
     */
    String getDeptNameByDeptId(@Param("deptId") Long deptId);

    /**
     *
     * @param deptId
     * @param belongDate
     * @return
     */
    List<AuditUserDTO> getAllListByDeptId(@Param("deptId") Long deptId, @Param("belongDate") String belongDate);

    /**
     *
     * @param userIds
     * @return
     */
    List<AuditUserDTO> selectExportUserInfoList(@Param("userIds") List<String> userIds);

    /**
     *
     * @param belongDate
     * @param userIds
     * @return
     */
    List<YqInfoCollectDTO> selectYqInfoCollectListByUserIds(@Param("belongDate") String belongDate, @Param("userIds") List<String> userIds);

    /**
     *
     * @param belongDate
     * @param deptIds
     * @return
     */
    List<YqInfoCollectDTO> getYqInfoCollectDTOListByDeptIds(@Param("belongDate") String belongDate, @Param("deptIds") List<Long> deptIds);
}
